<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<!--
 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
 * Copyright (C) 2003-2009 Frederico Caldeira Knabben
 *
 * == BEGIN LICENSE ==
 *
 * Licensed under the terms of any of the following licenses at your
 * choice:
 *
 *  - GNU General Public License Version 2 or later (the "GPL")
 *    http://www.gnu.org/licenses/gpl.html
 *
 *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 *    http://www.gnu.org/licenses/lgpl.html
 *
 *  - Mozilla Public License Version 1.1 or later (the "MPL")
 *    http://www.mozilla.org/MPL/MPL-1.1.html
 *
 * == END LICENSE ==
-->
<html>
<head>
<meta name="generator" content="HTML Tidy, see www.w3.org">
<title>SCAYT Properties</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta content="noindex, nofollow" name="robots">
<script src="common/fck_dialog_common.js" type="text/javascript">
</script>

<link type="text/css" href="fck_scayt/scayt_dialog.css" rel=
"stylesheet">
<script type="text/javascript">

            var dialog  = window.parent ;
            var oEditor = dialog.InnerDialogLoaded() ;
            var FCKLang = oEditor.FCKLang;
            var scayt = oEditor.scayt;
            var scayt_control = oEditor.scayt_control;
            var lang_list = {};
            var sLang;
            var fckLang;
            var chosed_lang;
            var options;
            var tabs = scayt_control.uiTags || [1,1,0,1];
            var userDicActive = tabs[2] == 1;
            var captions;
            var dic_buttons = [
                // [0] contains buttons for creating
                "dic_create,dic_restore",
                // [1] contains buton for manipulation
                "dic_rename,dic_delete"
            ];

            var get =
                new function(){

                    var mergeObjs = function(obj1, obj2)
                    {
                        for (var k in obj1)
                            obj2[k] = obj1[k];

                        return obj2;
                    };

                    var removeWhitespaces = function( s )
                    {
                        s = s.replace( new RegExp("^ +| +$"), '' ) ;
                        return s ;
                    };

                    var addEvent = function( el ,sEventName, fTodo )
                    {
                        if (el.addEventListener) {
                            el.addEventListener (sEventName,fTodo,false);

                        } else if (el.attachEvent) {
                            el.attachEvent ("on"+sEventName,fTodo);

                        } else {
                            el["on"+sEventName] = fTodo;
                        }
                    };

                    var getElementsByClassName = function (node,classname ,strTag) {
                        strTag = strTag || "*";
                        node = node || document;
                        if (node.getElementsByClassName)
                            return node.getElementsByClassName(classname);
                        else {
                            var objColl = node.getElementsByTagName(strTag);
                            if (!objColl.length &&  strTag == "*" &&  node.all) objColl = node.all;
                            var arr = new Array();
                            var delim = classname.indexOf('|') != -1  ? '|' : ' ';
                            var arrClass = classname.split(delim);
                            for (var i = 0, j = objColl.length; i < j; i++) {
                                var arrObjClass = objColl[i].className.split(' ');
                                if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
                                var c = 0;
                                comparisonLoop:
                                    for ( var k = 0, l = arrObjClass.length ; k < l ; k++ )
                                    {
                                        for ( var m = 0, n = arrClass.length ; m < n ; m++ )
                                        {
                                            if ( arrClass[m] == arrObjClass[k] )
                                                c++ ;

                                            if ( ( delim == '|' && c == 1 ) || ( delim == ' ' && c == arrClass.length ) )
                                            {
                                                arr.push( objColl[i] ) ;
                                                break comparisonLoop ;
                                            }
                                        }
                                    }
                            }
                            return arr;
                        }
                    };

                    var hasClassName = function ( sClassName, elem ) {
                        //.split(/\s+/);
                        var aCnames = elem.className.split(/\s+/) || [];
                        for (var i=0, l=aCnames.length; i<l ; i++){
                            if (sClassName == aCnames[i])
                                return true;
                        }
                        return false;
                    }

                    var single = {
                        addClass    : function ( sClassName ) {
                            //console.info( sClassName, this.className, );
                            if ( hasClassName(sClassName , this) )
                                return this;
                            var s = removeWhitespaces(this.className + " " +sClassName);
                            this.className = s;
                            return this;

                        },
                        removeClass : function ( sClassName ) {
                            var s = removeWhitespaces(this.className.replace(sClassName,""));
                            this.className = s;
                            return this;
                        },
                        setStyle : function( oStyles )
                        {
                            for ( var style in oStyles )
                            {
                                this.style[style] = oStyles[style] ;
                            }
                            return this ;
                        },
                        bindOnclick     : function ( handler ) {
                            //addEvent( this, "click" , handler);
                            this.onclick = handler;
                            return this;
                        },
                        bindOnchange    : function ( handler ) {
                            //addEvent( this, "change" , handler);
                            this.onchange = handler;
                            return this;
                        },
                        getAttr : function ( sAttrName )
                        {
                            if ( !sAttrName )
                                return null;

                            return this[sAttrName];
                        },
                        setAttr : function ( sAttrName , attrVal )
                        {
                            if ( !sAttrName || !attrVal )
                                return null;

                            this[sAttrName] = attrVal;

                            return this;
                        },
                        remAttr : function ( sAttrName )
                        {
                            if ( !sAttrName )
                                return null;
                        }
                    };

                    var singleCaller = function ( sMethod,args ) {
                        for ( var i=0, l=this.length; i<l ; i++ ){
                            var oItem = mergeObjs( single, this[i] );
                            oItem[sMethod].apply(this[i],args);
                        }
                    };


                    var collection = {

                        addClass    : function ( sClassName ){
                            singleCaller.call(this, "addClass", [sClassName])
                            return this;
                        },
                        removeClass     : function ( sClassName ) {
                            singleCaller.call(this, "removeClass", [sClassName])
                            return this;
                        },
                        setStyle        : function ( oStyles ) {
                            singleCaller.call(this, "setStyle", [oStyles])
                            return this;
                        },
                        bindOnclick     : function ( f ) {
                            singleCaller.call(this, "bindOnclick", [f])
                            return this;
                        },
                        bindOnchange    : function ( f ) {
                            singleCaller.call(this, "bindOnchange", [f])
                            return this;
                        },

                        forEach : function ( fTodo ) {
                            //el,i
                            for (var i=0, l=this.length; i<l ; i++){
                                fTodo.apply(this[i], [this[i],i ]);
                            }
                            return this;
                        }

                    };



                    this.byClass = function( sClassName ){
                        var o = getElementsByClassName(document, sClassName );
                        return o ? mergeObjs( collection, o ) : o;
                    };

                    this.byId = function( sId ){
                        var o = document.getElementById( sId );
                        return o ? mergeObjs( single, o ) : o;
                    };

                    this.gup = function ( name ){
                        name = name.replace( /[\[]/, '\\\[' ).replace( /[\]]/, '\\\]' ) ;
                        var regexS = '[\\?&]' + name + '=([^&#]*)' ;
                        var regex = new RegExp( regexS ) ;
                        var results = regex.exec( window.location.href ) ;

                        if( results == null )
                            return '' ;
                        else
                            return results[ 1 ] ;
                    };
                    this.wrap = function ( o ) {
                        return o ? mergeObjs( single, o ) : o;
                    };
                    this.forEach = function ( oScope, fTodo ){
                        collection.forEach.apply( oScope,[fTodo] );
                    };

                 };



            // Add the dialog tabs.
            tabs[0] == 1 && dialog.AddTab( 'options', 'Options' ) ;
            tabs[1] == 1 && dialog.AddTab( 'langs', 'Languages' ) ;
            tabs[2] == 1 && dialog.AddTab( 'dictionary', 'Dictionary' ) ;
            tabs[3] == 1 && dialog.AddTab( 'about', 'About' ) ;

            // Function called when a dialog tab is selected.
            function OnDialogTabChange( tabCode )
            {
                ShowE('inner_options'   , ( tabCode == 'options' ) ) ;
                ShowE('inner_langs' , ( tabCode == 'langs' ) ) ;
                ShowE('inner_dictionary'        , ( tabCode == 'dictionary' ) ) ;
                ShowE('inner_about' , ( tabCode == 'about' ) ) ;
            }





            window.onload = function()
            {
                // Things to do when the page is loaded.

                if ( document.location.search.length )
                    dialog.SetSelectedTab( document.location.search.substr(1) ) ;

                dialog.SetOkButton( true ) ;


                    if (!scayt) throw "SCAYT is undefined";
                    if (!scayt_control) throw "SCAYT_CONTROL is undefined";

                    // show alowed tabs
                    tabs = scayt_control.uiTags || [1,1,1,0];


                    sLang = scayt_control.getLang();
                    fckLang = "en";
                    options = scayt_control.option();
                    // apply captions
                    scayt.getCaption( fckLang, function( caps )
                    {
                        //console.info( "scayt.getCaption runned" )
                        captions = caps;
                        apllyCaptions();
                        //lang_list = scayt.getLangList();
                        lang_list = scayt.getLangList() ;//|| {ltr: {"en_US" : "English","en_GB" : "British English","pt_BR" : "Brazilian Portuguese","da_DK" : "Danish","nl_NL" : "Dutch","en_CA" : "English Canadian","fi_FI" : "Finnish","fr_FR" : "French","fr_CA" : "French Canadian","de_DE" : "German","el_GR" : "Greek","hu_HU" : "Hungarian","it_IT" : "Italian","nb_NO" : "Norwegian","pl_PL" : "Polish","pt_PT" : "Portuguese","ru_RU" : "Russian","es_ES" : "Spanish","sv_SE" : "Swedish","tr_TR" : "Turkish","uk_UA" : "Ukrainian","cy_GB" : "Welsh"},rtl: {"ar_EG" : "Arabic"}};




                        // ** animate options
                        get.byClass("_scayt_option").forEach(function(el,i){

                            if ('undefined' != typeof(options[el.name])) {
                                // *** set default values

                                if ( 1 == options[ el.name ] ){
                                   //el.setAttribute("checked","true");
                                   get.wrap(el).setAttr("checked" ,true)
                                   //document.all_options[el.name].checked = "true";
                                   //el.checked = true;
                                   //alert( options[ dojo.attr(el ,'name') ] + " el " )
                                }
                                //console.info(options)
                                // *** bind events
                                get.wrap(el).bindOnclick( function(ev){

                                    var that = get.wrap(this);
                                    var isCheck = that.getAttr("checked");
                                    //console.info(isCheck)
                                    if ( isCheck == false ) {

                                        //that.setAttr("checked",false);
                                        options[ this.name ] = 0;
                                    }else{
                                        //that.setAttr("checked",true);
                                        options[ this.name ] = 1;
                                    }
                                    //console.info(options)
                                });
                            }
                        });


                        // * Create languages tab
                        // ** convert langs obj to array
                        var lang_arr = [];

                        for (var k in lang_list.rtl){
                            // find curent lang
                            if ( k == sLang)
                                chosed_lang = lang_list.rtl[k] + "::" + k;
                            lang_arr[lang_arr.length] = lang_list.rtl[k] + "::" + k;

                        }
                        for (var k in lang_list.ltr){
                             // find curent lang
                             if ( k == sLang)
                                chosed_lang = lang_list.ltr[k] + "::" + k;
                            lang_arr[lang_arr.length] = lang_list.ltr[k] + "::" + k;
                        }
                        lang_arr.sort();

                        // ** find lang containers

                        var lcol = get.byId("lcolid");
                        var rcol = get.byId("rcolid");
                        // ** place langs in DOM

                        get.forEach(lang_arr , function( l , i ){

                            //console.info( l,i );

                            var l_arr = l.split('::');
                            var l_name = l_arr[0];
                            var l_code = l_arr[1];
                            var row = document.createElement('div');
                            row.id = l_code;
                            row.className = "li";
                            // split langs on half
                            var col = ( i < lang_arr.length/2 ) ? lcol:rcol ;

                            // append row
                            //console.dir( col )
                            col.appendChild(row);
                            var row_dom = get.byId( l_code )
                            row_dom.innerHTML = l_name;

                            var checkActiveLang = function( id ){
                                return chosed_lang.split("::")[1] == id;
                            };
                            // bind click
                            row_dom.bindOnclick(function(ev){

                                if ( checkActiveLang(this.id) ) return false;
                                var elId = this.id;
                                get.byId(this.id)
                                    .addClass("Button")
                                    .removeClass("DarkBackground");

                                window.setTimeout( function (){ get.byId(elId).setStyle({opacity:"0.5",cursor:"no-drop"});  } ,300 );

                                get.byId(chosed_lang.split("::")[1])
                                    .addClass("DarkBackground")
                                    .removeClass("Button")
                                    .setStyle({opacity:"1",cursor:"pointer"});

                                chosed_lang = this.innerHTML + "::" + this.id;
                                return true;
                            })
                            .setStyle({
                                cursor:"pointer"
                            });
                            // select current lang
                            if (l == chosed_lang)
                                row_dom.addClass("Button").setStyle({opacity:"0.5",cursor:"no-drop"});
                            else
                                row_dom.addClass("DarkBackground").setStyle({opacity:"1"});

                        });
                        // * user dictionary
                        if ( userDicActive ){
                            initUserDictionary()

                        }
                    });



            }




            var buttons = [ 'dic_create','dic_delete','dic_rename','dic_restore' ];
            var labels  = [ 'mixedCase','mixedWithDigits','allCaps','ignoreDomainNames' ];


            function apllyCaptions ( )
            {

                // fill tabs headers
                // add missing captions

                get.byClass("PopupTab").forEach(function(el,i){

                    if ( tabs[i] == 1 ){
                        el.style.display = "block";
                    }
                    el.innerHTML = captions['tab_'+el.id];

                });

                // Fill options labels.
                for ( i in labels )
                {
                    var label = 'label_' + labels[ i ],
                        labelElement = document.getElementById( label );

                    if (  'undefined' != typeof labelElement
                       && 'undefined' != typeof captions[ label ] && captions[ label ] !== ""
                       && 'undefined' != typeof options[labels[ i ]] )
                    {
                        labelElement.innerHTML = captions[ label ];
                        var labelParent = labelElement.parentNode;
                        labelParent.style.display = "block";
                    }
                }
                // fill dictionary section
                for ( var i in buttons )
                {
                    var button = buttons[ i ];
                    get.byId( button ).innerHTML = '<span>' + captions[ 'button_' + button]  +'<\/span>' ;
                }
                get.byId("dname").innerHTML = captions['label_dname'];
                get.byId( 'dic_info' ).innerHTML = captions[ 'dic_info' ];

                // fill about tab
                var about = '<p>' + captions[ 'about_throwt_image' ] + '<\/p>'+
                    '<p>' + captions[ 'version' ]  + scayt.version.toString() + '<\/p>' +
                    '<p>' + captions[ 'about_throwt_copy' ] + '<\/p>';

                get.byId( 'scayt_about' ).innerHTML = about;

            }


            function initUserDictionary () {

                scayt.getNameUserDictionary(
                    function( o )
                    {
                        var dic_name = o.dname;
                        if ( dic_name )
                        {
                            get.byId( 'dic_name' ).value = dic_name;
                            display_dic_buttons( dic_buttons[1] );
                        }
                        else
                            display_dic_buttons( dic_buttons[0] );

                    },
                    function ()
                    {
                        get.byId( 'dic_name' ).value("");
                        dic_error_message(captions["err_dic_enable"] || "Used dictionary are unaveilable now.")
                    }
                );

                dic_success_message("");

                 // ** bind event listeners
                get.byClass("button").bindOnclick(function( ){

                    // get dic name
                    var dic_name = get.byId('dic_name').value ;
                    // check common dictionary rules
                    if (!dic_name) {
                        dic_error_message(" Dictionary name should not be empty. ");
                        return false;
                    }
                    //apply handler
                    window[this.id].apply( window, [this, dic_name, dic_buttons ] );

                    //console.info( typeof window[this.id], window[this.id].calle )
                    return false;
                });

            }

            dic_create = function( el, dic_name , dic_buttons )
            {
                // comma separated button's ids include repeats if exists
                var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];

                var err_massage = captions["err_dic_create"];
                var suc_massage = captions["succ_dic_create"];
                //console.info("--plugin ");

                scayt.createUserDictionary(dic_name,
                    function(arg)
                        {
                            //console.info( "dic_create callback called with args" , arg );
                            hide_dic_buttons ( all_buttons );
                            display_dic_buttons ( dic_buttons[1] );
                            suc_massage = suc_massage.replace("%s" , arg.dname );
                            dic_success_message (suc_massage);
                        },
                    function(arg)
                        {
                            //console.info( "dic_create errorback called with args" , arg )
                            err_massage = err_massage.replace("%s" ,arg.dname );
                            dic_error_message ( err_massage + "( "+ (arg.message || "") +")");
                        });

            };

            dic_rename = function( el, dic_name , dic_buttons )
            {
                //
                // try to rename dictionary
                // @TODO: rename dict
                //console.info ( captions["err_dic_rename"] )
                var err_massage = captions["err_dic_rename"] || "";
                var suc_massage = captions["succ_dic_rename"] || "";
                scayt.renameUserDictionary(dic_name,
                    function(arg)
                        {
                            //console.info( "dic_rename callback called with args" , arg );
                            suc_massage = suc_massage.replace("%s" , arg.dname );
                            set_dic_name( dic_name );
                            dic_success_message ( suc_massage );
                        },
                    function(arg)
                        {
                            //console.info( "dic_rename errorback called with args" , arg )
                            err_massage = err_massage.replace("%s" , arg.dname  );
                            set_dic_name( dic_name );
                            dic_error_message( err_massage + "( " + ( arg.message || "" ) + " )" );
                        });
            };

            dic_delete = function ( el, dic_name , dic_buttons )
            {
                var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
                var err_massage = captions["err_dic_delete"];
                var suc_massage = captions["succ_dic_delete"];

                // try to delete dictionary
                // @TODO: delete dict
                scayt.deleteUserDictionary(
                    function(arg)
                        {
                            //console.info( "dic_delete callback " , dic_name ,arg );
                            suc_massage = suc_massage.replace("%s" , arg.dname );
                            hide_dic_buttons ( all_buttons );
                            display_dic_buttons ( dic_buttons[0] );
                            set_dic_name( "" ); // empty input field
                            dic_success_message( suc_massage );
                        },
                    function(arg)
                        {
                            //console.info( " dic_delete errorback called with args" , arg )
                            err_massage = err_massage.replace("%s" , arg.dname );
                            dic_error_message(err_massage);
                        });
            };

            dic_restore = dialog.dic_restore || function ( el, dic_name , dic_buttons )
            {
                // try to restore existing dictionary
                var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
                var err_massage = captions["err_dic_restore"];
                var suc_massage = captions["succ_dic_restore"];

                scayt.restoreUserDictionary(dic_name,
                    function(arg)
                        {
                            //console.info( "dic_restore callback called with args" , arg );
                            suc_massage = suc_massage.replace("%s" , arg.dname );
                            hide_dic_buttons ( all_buttons );
                            display_dic_buttons(dic_buttons[1]);
                            dic_success_message( suc_massage );
                        },
                    function(arg)
                        {
                            //console.info( " dic_restore errorback called with args" , arg )
                            err_massage = err_massage.replace("%s" , arg.dname );
                            dic_error_message( err_massage );
                        });
            };

            function dic_error_message( m )
            {
                if ( !m )
                    return ;

                get.byId('dic_message').innerHTML =  '<span class="error">' + m + '<\/span>' ;
            }

            function dic_success_message( m )
            {
                if ( !m )
                    return ;

                get.byId('dic_message').innerHTML = '<span class="success">' + m + '<\/span>' ;
            }

            function display_dic_buttons ( sIds ){
                sIds = new String( sIds );
                get.forEach( sIds.split(','), function ( id,i) {
                    get.byId(id).setStyle({display:"inline"});
                });
            }
            function hide_dic_buttons ( sIds ){
                sIds = new String( sIds );
                get.forEach( sIds.split(','), function ( id,i) {
                    get.byId(id).setStyle({display:"none"});
                });
            }
            function set_dic_name ( dic_name ) {
                get.byId('dic_name').value = dic_name;
            }
            function display_dic_tab () {
                get.byId("dic_tab").style.display = "block";
            }

            function Ok()
            {
                // Things to do when the Ok button is clicked.
                var c = 0;
                // set upp options if any was set
                var o = scayt_control.option();
                //console.info(options)
                for ( var oN in options ) {

                    if ( o[oN] != options[oN] && c == 0){
                        //console.info( "set option " )
                        scayt_control.option( options );
                        c++;
                    }
                }
                //setup languge if it was change
                var csLang = chosed_lang.split("::")[1];
                if ( csLang && sLang != csLang ){
                    scayt_control.setLang( csLang );
                    //console.info(sLang+" -> "+csLang , scayt_control)
                    c++;
                }

                if ( c > 0 )  scayt_control.refresh();

                return dialog.Cancel();

            }

        
</script>
</head>
<body style="OVERFLOW: hidden" scroll="no">
<div class="tab_container" id="inner_options">
<ul id="scayt_options">
<li class="_scayt_options"><input class="_scayt_option" type=
"checkbox" value="0" name="allCaps"> <label for="allCaps" id=
"label_allCaps"></label></li>

<li><input class="_scayt_option" type="checkbox" value="0" name=
"ignoreDomainNames"> <label for="ignoreDomainNames" id=
"label_ignoreDomainNames"></label></li>

<li><input class="_scayt_option" type="checkbox" value="0" name=
"mixedCase"> <label for="mixedCase" id=
"label_mixedCase"></label></li>

<li><input class="_scayt_option" type="checkbox" value="0" name=
"mixedWithDigits"> <label for="mixedWithDigits" id=
"label_mixedWithDigits"></label></li>
</ul>
</div>

<div class="tab_container" id="inner_langs">
<div class="lcol" id="lcolid"></div>

<div class="rcol" id="rcolid"></div>
</div>

<div class="tab_container" id="inner_dictionary">
<div id="dic_message"></div>

<div id="_off_dic_tab" class="dictionary">
<div style="padding-left:10px;"><label id="dname" for=
"dname"></label> <input type="text" size="14" maxlength="15" value=
"" id="dic_name" name="dic_name"></div>

<div class="dic_buttons"><a href="#" id="dic_create" class=
"button"></a> <a href="#" id="dic_delete" class="button"></a> <a
href="#" id="dic_rename" class="button"></a> <a href="#" id=
"dic_restore" class="button"></a></div>

<div id="dic_info"></div>
</div>
</div>

<div id="inner_about" class="tab_container">
<div id="scayt_about"></div>
</div>
</body>
</html>

